package co.edu.udea.xyz.iu.server;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.ServletContext;

import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import co.edu.udea.xyz.dto.Solicitud;
import co.edu.udea.xyz.iu.client.SolicitudService;
import co.edu.udea.xyz.iu.shared.GWTxyzException;
import co.edu.udea.xyz.iu.shared.dto.SolicitudGWT;
import co.edu.udea.xyz.util.exception.BLInversionesException;
import co.edu.udea.xyz.util.exception.XYZException;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;

public class SolicitudServiceImpl extends RemoteServiceServlet implements SolicitudService {

	@Override
	public List<SolicitudGWT> obtenerTodas()throws GWTxyzException {
		
		
		List<SolicitudGWT> lista = new ArrayList<SolicitudGWT>();
		try{
		ServletContext sc = getServletContext();
		ApplicationContext webApp = WebApplicationContextUtils.getWebApplicationContext(sc);
		
		co.edu.udea.xyz.bl.SolicitudService solicitudService = (co.edu.udea.xyz.bl.SolicitudService) webApp.getBean("solicitudService");
		
		for(Solicitud solicitud : solicitudService.obtenerListaSolicitudes() ){
			SolicitudGWT solicitudGWT = new SolicitudGWT();
			
			solicitudGWT.setIdSolicitud(solicitud.getIdSolicitud());
			solicitudGWT.setTipo_Solicitud(solicitud.getTipo_Solicitud());
			solicitudGWT.setEstado(solicitud.getEstado());
			
			lista.add(solicitudGWT);
		}
		}catch(BLInversionesException | XYZException e){
			throw new GWTxyzException("Ocurrio un error obteniendo los datos");
		}		
		return lista;
	}

	@Override
	public void guardarSolicitud(String id, String tipo, String estado, String textoSol, 
			String cedCliente,String codigoSucursal, String codProducto)throws GWTxyzException {
		try{
			ServletContext sc = getServletContext();
			ApplicationContext webApp = WebApplicationContextUtils.getWebApplicationContext(sc);
			
			co.edu.udea.xyz.bl.SolicitudService solicitudService = (co.edu.udea.xyz.bl.SolicitudService) webApp.getBean("solicitudService");
			//organizar formulario para llenar todos campos
		    int idSolicitud = Integer.parseInt(id);
		    String	estadoSol = estado;
		    int tipo_Solicitud = Integer.parseInt(tipo);
		    String texto_Solicitud = textoSol;
		    int	cedulaCliente = Integer.parseInt(cedCliente);
		    int idSucursal = Integer.parseInt(codigoSucursal);
		    int	idProducto = Integer.parseInt(codProducto);
		    			
			solicitudService.guardarSolicitud(idSolicitud, estadoSol, tipo_Solicitud, new Date(), texto_Solicitud, cedulaCliente, idSucursal, idProducto);
			
			
		}catch(BLInversionesException | XYZException e){
			throw new GWTxyzException("Ocurrio un error guardando los datos de Solicitud"+e.getMessage());
		}
		
	}

	

}
